#include <iostream>
#include<string>
using namespace std;

////C语言泛形编程
////template<class T>
////void Swap(T&a,T&b)
////{
////    T tmp=a;
////    a=b;
////    b=tmp;
////}
//
//int main()
//{
//
//double  a=0;
//double  b =20;
//    swap(a,b);
//    cout<<a<<" "<<b<<" "<<endl;
//
//    //C++有类模版之后这些逻辑基本相同的都被交给编译器去生成，根据形去推演， 然后实例化
//    //如果外部已经有一个这个调用的主逻辑函数，默认先调用主逻辑的，有现调现，没有模版实
//    //俩个参数让模版去推（纠结时候的自己）
//    //解决方法，强转
//    //指定
//    //模版不支持声明定义分离，要在同一个文件中定义声明
//
//    return 0;
//}



//int Add(int x,int y)
//{
//    return x+y;
//}
//
//int main()
//{
//    int c=Add(2,3);
//    return 0;
//}
//
//
//


//版本1[]法
//class Solution {
//public:
//    bool IfChar(char ch )
//    {
//        if(ch>='a'&&ch<='z')
//        {
//            return true;
//        }
//        if(ch>='A'&&ch<='Z')
//        {
//            return true ;
//        }
//        return false ;
//
//    }
//    string reverseOnlyLetters(string s)
//    {
//        int began=0;
//        int end=s.size();
//        while(began<end)
//        {
//            while(began<end&&!IfChar(s[began]))
//            {
//                began++;
//            }
//            while(began<end&&!IfChar(s[end]))
//            {
//                end--;
//            }
//
//            swap(s[began],s[end]);
//            began++;
//            end--;
//        }
//        return s;
//
//    }
//};


//版本2迭代器版
//俩个接口不可以重复出现
//string reverseOnlyLetters(string s)
//{
//
//    string::iterator itB=s.begin();
//    string::iterator itE=s.end();
//
//}
//int main()
//{
//    string d1("Test1ng-Leet=code-Q!");
//    reverseOnlyLetters(d1);
//}


//class Solution {
//public:
//    bool IfChar(char ch )
//    {
//        if(ch>='a'&&ch<='z')
//        {
//            return true;
//        }
//        if(ch>='A'&&ch<='Z')
//        {
//            return true ;
//        }
//        return false ;
//
//    }
//    string reverseOnlyLetters(string s)
//    {
//
//        string::iterator itB=s.begin();
//        string::iterator itE=s.end();
//        itE--;
//        while(itB<itE)
//        {
//            while(itB<itE&&!IfChar(*itB))
//            {
//                itB++;
//            }
//            while(itB<itE&&!IfChar(*itE))
//            {
//                itE--;
//            }
//
////int main()
////{
////    Solution a1;
////    string d1("hello world");
////
////    a1.reverseOnlyLetters(d1);
////    cout<<d1.capacity()<<endl;
////
////}
            //swap(*itB,*itE);
//            itB++;
//            itE--;
//        }
//        return s;
//
//    }
//};



//int main()
//{
//    int a =10;
//    string d1 ("welcome beauty  new world ");
//    auto it=d1.rbegin();
//
//   cout<<*it<<endl;
//   while(it!= d1.rend())
//   {
//       cout<<*it<<' ';
//       it++;
//   }
//}
